package com.bq.gulimall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * 1、如何使用 Nacos 作为配置中心统一管理配置
 *      1)、引入依赖
 *          <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *         </dependency>
 *      2)、创建一个 bootstrap.properties 配置文件 (该文件会优先于 application.properties 启动)
 *          配置关键的两项内容：(前提是启动 Nacos 服务器)
 *              a、当前项应用的名字：spring.application.name=gulimallcoupon
 *              b、配置中心服务的地址：spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 *      3)、需要给配置中心默认添加一个叫 数据集 (Data Id) gulimallcoupon.properties。
 *          默认规则：
 *              应用名(模块名).properties
 *      4)、给 应用名(模块名).properties 中 配置内容 中 添加任何配置
 *      5)、动态获取配置：
 *          @Re ：用来自动刷新 配置中心(项目上线时改配置文件时就不需要重新打包发送了，用户只要一刷新就可以了)
 *          @Value("${efreshScop配置项的名}") ：用来或得配置中心 或者是配置文件中的键值对的值
 *          如果配置中心和当前应用的配置文件中都配置了相同的键值对，优先使用配置中心的配置
 * 2、细节问题：
 *      1)、命名空间：
 *          作用：配置隔离
 *          默认：public(保留空间)；默认新增的所有配置都属于 public 空间
 *          示例：
 *              a、开发、测试、生产：利用命名空间来做环境隔离
 *                  注意：
 *                      在 bootstrap.properties 中配置上，需要使用哪个命名空间下的配置
 *                      spring.cloud.nacos.config.namespace=ffa61ed2-c3cb-4b19-af14-bdd4118105a2
 *              b、每一个微服务之间互相隔离配置，即每一个微服务都创建自己家的命名空间，加载自己命名空间下的所有配置
 *      2)、配置集
 *          所有配置文件的集合被我们称之为配置集
 *      3)、配置集ID
 *          类似于配置文件名。即 在新建配置时，窗口出现的 Data ID：配置文件名  (模块名)
 *              (gulimallcoupon.properties)
 *              看启动 该服务的信息 Loading nacos data, dataId(Spring 字样下的第一行)
 *      4)、配置分组
 *          默认所有的配置集都属于：DEFAULT_GROUP 分组里面(这些组可以通过业务来进行设定)
 *          示例：
 *              1111 618 1212
 *          新建配置时可以设定 Data ID 下面 有一个 Group 的后面可以填写
 *          注意：需要在 bootstrap.properties 中进行如下配置，隔离一组之间的不同时期的配置信息
 *              # 通过 spring.cloud.nacos.config.group 可以配置哪个组
 *              spring.cloud.nacos.config.group=1111
 * 3、同时加载多个配置集
 *      1)、微服务任何配置信息，任何配置文件都可以放在配置中心中
 *      2)、只需要在 bootstrap.properties 中说明加载配置中心哪些配置文件即可
 *      3)、@Value，@ConfigurationProperties。。。以前 SpringBoot 任何方法从配置中心中获取值，都可以使用
 *      4)、Nacos 配置中心有的优先于配置中心中的
 */

//@EnableDiscoveryClient 用来开启注册中心的客户端
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallcouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallcouponApplication.class, args);
    }
}
